﻿using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCS.Entity;
using WcsTask;

namespace WCS.Entity
{
    /// <summary>
    /// AGV任务实体
    /// </summary>
    [SugarTable("WCS_TASK_AGV")]
    public class WcsTaskAGV : WcsTaskCommon
    {
        public WcsTaskAGV()
        {
        }

        public WcsTaskAGV(WcsTaskMain wcsTaskMain)
        {
            Id = Guid.NewGuid().ToString();
            Task_Code = wcsTaskMain.Task_Code;//任务状态
            Sub_TaskCode = ProcessingTaskMain.GenerateRandomCode("sub");//子任务号 自己生成 //获取流水号
            TrayBar_Code = wcsTaskMain.TrayBar_Code;//托盘号
            materialType = wcsTaskMain.MaterialType;//托盘号
            Task_State = 0;//任务状态
            Priority = wcsTaskMain.Priority;//任务状态
            InteractiveState = 5;//任务状态
            ReceiveInteractiveState = 5;//任务状态
            CreateTime = DateTime.Now;
        }
        /// <summary>
        /// 子任务号
        /// </summary>
        public string Sub_TaskCode { get; set; }

        /// <summary>
        /// 操作库位
        /// </summary>
        public string WMSBinCode { get; set; }

        /// <summary>
        /// AGV交互状态
        /// </summary>
        public int InteractiveState { get; set; }

        /// <summary>
        /// AGV接收状态
        /// </summary>
        public int ReceiveInteractiveState { get; set; }

        /// <summary>
        /// w物料类型
        /// </summary>
        public string materialType { get; set; }

        /// <summary>
        /// 任务执行顺序
        /// </summary>
        public int indexOrder { get; set; }

        /// <summary>
        /// AGV执行动作
        /// </summary>
        public string ActionType { get; set; }

        /// <summary>
        /// 站台是否补料
        /// </summary>
        public int Replenishment { get; set; }

        /// <summary>
        /// 调度系统的任务ID
        /// </summary>
        public int AGVTaskID { get; set; }

        /// <summary>
        /// 发送时间
        /// </summary>
        public DateTime? SendTime { get; set; }
    }

    /// <summary>
    /// AGV执行动作类型
    /// </summary>
    public enum ActionType
    {
        移动任务 = 0,
        上料动作需要对接 = 1,//移动到某个位置执行上料动作(需要对接)
        上料动作无需对接 = 12,//移动到某个位置执行上料动作(无需对接)取完料直接走
        下料动作需要对接 = 2,//移动到某个位置执行下料动作(需要对接)
        下料动作无需对接 = 13,//下料无动作
        移动到某个点等待上层系统确认上层放行 = 2,
    }

    /// <summary>
    /// AGV任务实体
    /// </summary>
    [SugarTable("WCS_ZBK_TASK_AGV")]
    public class WcsZBKTaskAGV : WcsTaskAGV
    {
    }
}
